package com.demo.java.OD151_200.OD193;

import java.util.Comparator;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【字符串统计 剩余可用字符集】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145885404
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String line = s.nextLine(); // 读取输入
        solveMethod(line); // 调用解决方法
    }

    private static void solveMethod(String line) {
        // 按照 @ 分割字符集和已占用部分
        String[] split = line.split("@");

        HashMap<String, Integer[]> map = new HashMap<>();  // 存储字符及其数量

        // 处理字符集部分
        String[] all = split[0].split(",");
        for (int i = 0; i < all.length; ++i) {
            String[] char_count = all[i].split(":");  // 分割字符和数量
            String c = char_count[0];  // 字符
            int count = Integer.parseInt(char_count[1]);  // 数量
            map.put(c, new Integer[]{i, count});  // 存储字符和数量
        }

        // 处理已占用字符部分
        if (split.length > 1) {
            for (String s : split[1].split(",")) {
                String[] char_count = s.split(":");
                String c = char_count[0];
                Integer[] item = map.get(c);  // 获取该字符
                item[1] -= Integer.parseInt(char_count[1]);  // 减去已占用的数量
                map.put(c, item);  // 更新字符的数量
            }
        }

        // 使用优先队列根据输入顺序排序字符
        PriorityQueue<HashMap.Entry<String, Integer[]>> pq = new PriorityQueue<>(Comparator.comparingInt(x -> x.getValue()[0]));

        for (HashMap.Entry<String, Integer[]> entry : map.entrySet()) {
            if (entry.getValue()[1] > 0) {  // 只处理剩余数量大于 0 的字符
                pq.offer(entry);  // 将符合条件的字符加入队列
            }
        }

        // 构建结果字符串
        StringBuilder sb = new StringBuilder();

        while (!pq.isEmpty()) {
            HashMap.Entry<String, Integer[]> entry = pq.poll();
            sb.append(entry.getKey())  // 字符
                    .append(":")
                    .append(entry.getValue()[1])  // 剩余数量
                    .append(",");
        }

        // 输出结果，去掉最后一个逗号
        System.out.println(sb.substring(0, sb.length() - 1));
    }
}